const socket = require('socket.io');
// 数据库配置
const config = require('./config.json');
const main = socket('3001');
// 数据库
const mydb = require('./utility/db');
// 玩家的管理
const playerController = require('./game/player');

// 链接数据库
mydb.connect(config.mysqlConfig);

// 接受消息的处理
main.on('connection', function (socket) {
    console .log('a user connected');
    // 登陆游戏的请求消息
    socket.on('notify', function (notifydata) {
        // 数据
        let datainfo = notifydata.data;
        // 计数
        let callBackIndex = notifydata.callBackIndex;
        switch (notifydata.msg) {
            case 'login':{                  // 登录消息的处理
                mydb.checkPlayer(datainfo.uniqueID,function (err, data) {
                    if (err){
                        console .log('login uniqueID err = ' + err);
                    } else {
                        // 没查到玩家的数据说明没有角色信息
                        if (data.length === 0){
                            let uid = '1';
                            for (let i = 0; i < 5; ++i){
                                uid += Math.floor(Math.random() * 10);
                            }
                            datainfo.uid = uid;
                            // 钻石数量
                            datainfo.diamonds = 5;
                            // 游戏玩家ID
                            datainfo.gameID = uid;

                            // 将第一次登陆的信息保存到数据库
                            mydb.insertPlayerInfo({
                                account: datainfo.account,
                                password: datainfo.password,
                                unique_id: datainfo.uniqueID,
                                uid: datainfo.uid,
                                nick_name: datainfo.nickName,
                                avatar_url: datainfo.avatarUrl,
                                game_id: datainfo.gameID,
                                house_card_count : datainfo.diamonds
                            });

                            // 发送可以创建角色的消息
                            // 创建角色
                            playerController.createrPlayer(socket, {
                                uid: datainfo.uid,
                                nickName: datainfo.nickName,
                                avatarUrl: datainfo.avatarUrl,
                                diamonds: datainfo.diamonds
                            });
                        } else { // 查到玩家的数据说明有角色信息
                            // 对比账号密码
                            if(data[0].account === datainfo.account && datainfo.password === data[0].password) {
                                // 发送登陆游戏或创建角色消息

                                console .log('登陆成功 = ' + JSON.stringify(data));
                                // 创建角色
                                playerController.createrPlayer(socket, {
                                    uid: data[0].uid,
                                    nickName: data[0].nick_name,
                                    avatarUrl: data[0].avatar_url,
                                    diamonds: data[0].house_card_count
                                });
                            } else {
                                // 发送账号密码不正确信息

                                console.log('账号密码不正确');
                            }
                        }
                    }
                });
                break;
            }
            default:{
                break;
            }
        }
    });
});
console.log('listen on 3000');